package com.black.opencvStudy;

import org.junit.Test;
import org.opencv.core.*;
import org.opencv.highgui.HighGui;
import org.opencv.imgproc.Imgproc;

import java.util.Arrays;
import java.util.List;

/**
 * @description：
 * @author：8568
 */
public class Demo2 extends OpencvEV {

    /**
     * 绘制直线
    */
    @Test
    public void drawLine() {
        // 白色的背景板
        Mat backGround = new Mat(new Size(600, 600), CvType.CV_8UC3, new Scalar(255, 255, 255));
        Imgproc.line(
                // 画的对象
                backGround,
                // 起始点
                new Point(0, 300),
                // 结束点
                new Point(600, 300),
                // 画笔颜色
                new Scalar(0, 0, 255),
                // 直线粗细
                1);
        HighGui.namedWindow("w");
        HighGui.imshow("w", backGround);
        HighGui.waitKey(0);
        HighGui.destroyAllWindows();
        backGround.release();
    }

    /**
     * 绘制多边形
     */
    @Test
    public void drawPolygon() {
        Mat backGround = new Mat(new Size(600, 600), CvType.CV_8UC3, new Scalar(255, 255, 255));
        List<MatOfPoint> pts = Arrays.asList(new MatOfPoint(
                new Point(300.0, 250.0),
                new Point(250.0, 350.0),
                new Point(350.0, 350.0)));
        // 绘制多边形的函数
        Imgproc.polylines(
                // 输入的图像
                backGround,
                // 多边形顶点坐标
                pts,
                // 是否闭合
                true,
                // 颜色
                new Scalar(0, 0, 0),
                //线条宽度
                8,
                // 边界的类型
                Imgproc.LINE_8,
                // 坐标的小数点位数
                0
        );
        HighGui.namedWindow("w");
        HighGui.imshow("w", backGround);
        HighGui.waitKey(0);
        HighGui.destroyAllWindows();
        backGround.release();
    }

    /**
     * 其它图形类似
    */
}
